<%#
 Copyright 2008-2009 Steven Barth <steven@midlink.org>
 Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
 Licensed to the public under the Apache License 2.0.
-%>

<%-
	require "luci.tools.webadmin"
	require "nixio.fs"

	local ip = require "luci.ip"
	local style = true
	local _, v

	local rtn = {
		[255] = "local",
		[254] = "main",
		[253] = "default",
		[0]   = "unspec"
	}

	if nixio.fs.access("/etc/iproute2/rt_tables") then
		local ln
		for ln in io.lines("/etc/iproute2/rt_tables") do
			local i, n = ln:match("^(%d+)%s+(%S+)")
			if i and n then
				rtn[tonumber(i)] = n
			end
		end
	end
-%>

<%+header%>

<div class="cbi-map" id="cbi-network">
	
	
</div>
	<!-- 标题栏 -->
	<div class="row-fluid">
		<div class="span12">
			<div class="console-title">
				<h5><a id="page-title" name="page-title"><%:Routes%></a></h5>
			</div>
		</div>
	</div>
	<div class="cbi-map-descr"><%:The following rules are currently active on this system.%></div>

	<fieldset class="cbi-section">
		<div class="widget-box">
		<div class="widget-title">
			<span class="icon">
			<i class="icon-th"></i>
			</span>
			<h5>ARP</h5>

		</div>
		<div class="widget-content nopadding">

		<div class="cbi-section-node">
			<table class="table table-bordered">
				<tr >
					<th ><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></th>
					<th ><%_<abbr title="Media Access Control">MAC</abbr>-Address%></th>
					<th ><%:Interface%></th>
				</tr>

				<%
					for _, v in ipairs(ip.neighbors({ family = 4 })) do
						if v.mac then
				%>
				<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
					<td class="cbi-value-field"><%=v.dest%></td>
					<td class="cbi-value-field"><%=v.mac%></td>
					<td class="cbi-value-field"><%=v.dev%></td>
				</tr>
				<%
							style = not style
						end
					end
				%>
			</table>
		</div>
		</div>
	</fieldset>
	<br />

	<fieldset class="cbi-section">

		<div class="widget-box">
		<div class="widget-title">
			<span class="icon">
			<i class="icon-th"></i>
			</span>
			<h5><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></h5>

		</div>
		<div class="widget-content nopadding">
		<div class="cbi-section-node">
			<table class="cbi-section-table">
				<tr class="cbi-section-table-titles">
					<th class="cbi-section-table-cell"><%:Network%></th>
					<th class="cbi-section-table-cell"><%:Target%></th>
					<th class="cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></th>
					<th class="cbi-section-table-cell"><%:Metric%></th>
					<th class="cbi-section-table-cell"><%:Table%></th>
				</tr>
				<% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %>
				<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
					<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></td>
					<td class="cbi-value-field"><%=v.dest%></td>
					<td class="cbi-value-field"><%=v.gw%></td>
					<td class="cbi-value-field"><%=v.metric or 0%></td>
					<td class="cbi-value-field"><%=rtn[v.table] or v.table%></td>
				</tr>
				<% style = not style end %>
			</table>
		</div>
		</div>
	</fieldset>
	<br />
	<%
		if nixio.fs.access("/proc/net/ipv6_route") then
			style = true
	%>
	<fieldset class="cbi-section">
		<div class="widget-box">
			<div class="widget-title">
				<span class="icon">
				<i class="icon-th"></i>
				</span>
				<h5><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></h5>

			</div>
			<div class="widget-content nopadding">

		<div class="cbi-section-node">
			<table class="cbi-section-table">
				<tr class="cbi-section-table-titles">
					<th class="cbi-section-table-cell"><%:Network%></th>
					<th class="cbi-section-table-cell"><%:Target%></th>
					<th class="cbi-section-table-cell"><%:Source%></th>
					<th class="cbi-section-table-cell"><%:Metric%></th>
					<th class="cbi-section-table-cell"><%:Table%></th>
				</tr>
				<%
					for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do
						if v.dest and not v.dest:is6linklocal() then
				%>
				<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
					<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td>
					<td class="cbi-value-field"><%=v.dest%></td>
					<td class="cbi-value-field"><%=v.from%></td>
					<td class="cbi-value-field"><%=v.metric or 0%></td>
					<td class="cbi-value-field"><%=rtn[v.table] or v.table%></td>
				</tr>
				<%
							style = not style
						end
					end
				%>
			</table>
		</div>
			</div>
		</div>
	</fieldset>
	<br />

	<fieldset class="cbi-section">
		<div class="widget-box">
			<div class="widget-title">
				<span class="icon">
				<i class="icon-th"></i>
				</span>
				<h5><%:IPv6 Neighbours%></h5>

			</div>
			<div class="widget-content nopadding">

		<div class="cbi-section-node">
			<table class="cbi-section-table">
				<tr class="cbi-section-table-titles">
					<th class="cbi-section-table-cell"><%:IPv6-Address%></th>
					<th class="cbi-section-table-cell"><%:MAC-Address%></th>
					<th class="cbi-section-table-cell"><%:Interface%></th>
				</tr>
				<%
					for _, v in ipairs(ip.neighbors({ family = 6 })) do
						if v.dest and not v.dest:is6linklocal() and v.mac then
				%>
				<tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
					<td class="cbi-value-field"><%=v.dest%></td>
					<td class="cbi-value-field"><%=v.mac%></td>
					<td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td>
				</tr>
				<%
							style = not style
						end
					end
				%>
			</table>
		</div>
		</div></div>
	</fieldset>
	<br />
	<% end %>
</div>

<%+footer%>
